<?php

class ArrayToList extends CWidget {

    public $data;
    public $parentId;
    public $tag; //tag thay cho span
    private $_menu;

    public function run() {
        if (isset($this->data[$this->parentId])) {
            $this->menuRecursion($this->parentId, $this->data);

            if (!empty($this->tag))
                $this->_menu = str_replace('span', $this->tag, $this->_menu);

            echo $this->_menu;
        }
    }

    /**
     * DÙNG ĐỆ QUI - RECURSION
     *  - Lưu ý biến $menu sau cùng phải được bao bọc bởi cặp <ul>, nghĩa là
     *    <ul>$menu</ul>
     */
    private function menuRecursion($parent_id, $menu_array) {
        $parent_array = $menu_array[$parent_id];

        foreach ($parent_array as $id => $title) {
            if (array_key_exists($id, $menu_array)) {
                $this->_menu .= '<li><span class="link" ref="' . $id . '">' . $title . '</span>';
                $this->_menu .= '<ul>';
                $this->menuRecursion($id, $menu_array);
                $this->_menu .= '</ul></li>';
            }
            else
                $this->_menu .= '<li><span class="link" ref="' . $id . '">' . $title . '</span></li>';
        }
    }

}